// 公共方法(wx微信) 'const $app = getApp()'  '$app.$common_wx'
export default{
  // ===================== 双向绑定(表单元素) ====================
  model (e, _this) {
    e = e.detail
    // e.currentTarget 存在说明是表单元素返回的值 不存在则表明是自定组件返回的值
    const model = e.currentTarget ? e.currentTarget.dataset.model : e.model
    // 如果双向绑定的值时数组 说明要双向绑定多个值
    if (Array.isArray(model)) { // 绑定多个值
      // 绑定多个值必须要传modelKey 及双向绑定对应的键值
      e.modelKey && e.modelKey.forEach((k, i) => {
        _this.setData({ [model[i]]: e[k] })
      })
    } else { // 绑定一个值
      // e.currentTarget 存在说明是表单元素返回的值 不存在则表明是自定组件返回的值
      const val = e.currentTarget ? e.detail.value : e.value
      _this.setData({ [model]: val })
    }
  },
  // 返回上一页
  back (data) {
    const pages = getCurrentPages() // 获取页面栈
    if (pages.length <= 1) return
    let prev = pages[pages.length - 2] // 上一个页面实例
    prev.back && prev.back(data) // 调用'上一页返回方法'(注: 上一页必须有'back()')
    wx.navigateBack({ delta: 1 }) // 返回上一页
  },
  // ========== 扫二维码 ==========
  scan () {
    return new Promise((resolve, reject) => {
      const $app = getApp()
      wx.scanCode({
        success: (res) => {
          // console.log('扫二维码', res)
          resolve(res)
          // charSet: "utf-8"
          // codeVersion: 1
          // errMsg: "scanCode:ok"
          // rawData: "MTExMQ=="
          // result: "1111"
          // scanType: "QR_CODE"
        },
        fail: (res) => {
          console.log('扫二维码fail', res)
          if (res.errMsg !== 'scanCode:fail cancel') {
            $app.$common.message('扫描失败' + res.errMsg, 'error')
          }
          reject(res)
        }
      })
    })
  }
}